from scipy.optimize import minimize
import numpy as np
obj=lambda x: -x[0]**2- x[1]**2 + x[0]*x[1] +  2*x[0] + 5*x[1]
cons=[{'type':'ineq','fun':lambda x:-x[0]**2 +2*x[0]+x[1]-1},
      {'type':'ineq','fun':lambda x:2*x[0]-3*x[1]+6}]
boundry=[(-np.inf,np.inf),(-np.inf,np.inf)]
initial_number=[3,3.9995]
res=minimize(obj,initial_number,constraints=cons,method='COBYLA',bounds=boundry)
#我尝试了所有的方法，只有线性逼近法能得到全局最优解
#不知道为什么，当x1取3，x2取4时对应的解非常难找到，猜测这里是一个局部解
#为了避开他只能多次更改方法尝试
print(res.fun)#最小值
print(res.success)#求解状态
print(res.x)#最小值对应自变量取值
#这道题只能求得局部最优解
#得到的结果：x1=1,x2=0,最大值为-1